import gzip
import requests
import json
import time
import base64
import random
import sys

day = 86400
hour = 3600
minute = 60
second = 1
start = 1663248630  # 2022-9-15 21:30:30
fake = b"{'begintime':'%d','endtime':'%d'," \
       b"'uid" \
       b"':'09e2139008e25e258b96efb6a9a19f149d2af95354094b229d40895ccb3c961c1633677712$d4b392ed7c7e358d11859e6baa08786b','schoolno':'10338','distance':'3100.0','speed':'2.6495726495726495','studentno':'2020329621036','atttype':'3','eventno':'801','location':'30.31536783854164,120.35738742404511;1670322623;null;null;3.0;null@30.315320638020732,120.35749348958333;1670322627;null;null;3.0;null@30.313841417100694,120.35747748480902;1670322637;null;null;22.63;null@30.31379665798611,120.35700276692708;1670322640;null;null;5.31;null@30.313838433159724,120.35676323784722;1670322644;null;null;3.0;null@30.31438449435764,120.35678927951389;1670322647;null;null;20.96;null@30.314882269965278,120.35675130208334;1670322650;null;null;9.3;null@30.315135633680555,120.35675835503473;1670322654;null;null;7.37;null@30.315337999131945,120.35679551866319;1670322657;null;null;24.0;null@30.315296766493056,120.35751546223959;1670322660;null;null;24.0;null@30.31447970920139,120.35758056640626;1670322667;null;null;27.52;null@30.31447970920139,120.35758056640626;1670322667;null;null;27.52;null@30.31447970920139,120.35758056640626;1670322667;null;null;27.52;null@30.31447970920139,120.35758056640626;1670322667;null;null;27.52;null@30.31431884765625,120.35755452473958;1670322679;null;null;18.0;null@30.313806423611112,120.35742730034723;1670322683;null;null;10.76;null@30.313778754340277,120.35694254557292;1670322686;null;null;18.0;null@30.314107259114582,120.35676432291666;1670322690;null;null;32.37;null@30.314183485243056,120.35681043836806;1670322692;null;null;18.0;null@30.314183485243056,120.35681043836806;1670322692;null;null;18.0;null@30.314183485243056,120.35681043836806;1670322692;null;null;18.0;null@30.314183485243056,120.35681043836806;1670322692;null;null;18.0;null@30.314183485243056,120.35681043836806;1670322692;null;null;18.0;null@30.314183485243056,120.35681043836806;1670322692;null;null;18.0;null@30.314183485243056,120.35681043836806;1670322692;null;null;18.0;null@30.314183485243056,120.35681043836806;1670322692;null;null;18.0;null@30.314183485243056,120.35681043836806;1670322736;null;null;18.0;null@30.314856499565973,120.35673529730903;1670322739;null;null;18.0;null@30.31530707465278,120.35677761501736;1670322742;null;null;27.68;null@30.31538058810764,120.35722330729166;1670322746;null;null;8.78;null@30.315335828993057,120.35692654079861;1670322761;null;null;3.0;null@30.31533365885417,120.35745144314237;1670322765;null;null;11.9;null@30.315164116753472,120.35758734809028;1670322768;null;null;14.17;null@30.31431884765625,120.35756944444445;1670322779;null;null;11.7;null@30.314036729600694,120.35752034505208;1670322782;null;null;17.8;null@30.313744303385416,120.35719102647569;1670322786;null;null;24.0;null@30.31378960503472,120.35688666449653;1670322789;null;null;10.77;null@30.314027506510417,120.35667426215278;1670322793;null;null;24.0;null@30.31429226345486,120.35677137586805;1670322796;null;null;17.2;null@30.314549424913196,120.35677544487847;1670322799;null;null;3.97;null@30.314837510850694,120.35674723307292;1670322803;null;null;3.4;null@30.315337999131945,120.35679551866319;1670322806;null;null;24.0;null@30.3153662109375,120.35716824001736;1670322810;null;null;15.33;null@30.315244140625,120.35755045572917;1670322813;null;null;6.54;null@30.313968641493055,120.35759250217014;1670322823;null;null;21.15;null@30.313770073784724,120.35727511935764;1670322827;null;null;18.0;null@30.314002278645834,120.35678439670139;1670322831;null;null;23.3;null@30.31429741753472,120.35676432291666;1670322833;null;null;25.62;null@30.31429741753472,120.35676432291666;1670322833;null;null;25.62;null@30.31429741753472,120.35676432291666;1670322833;null;null;25.62;null@30.31429741753472,120.35676432291666;1670322833;null;null;25.62;null@30.31429741753472,120.35676432291666;1670322833;null;null;25.62;null@30.31429741753472,120.35676432291666;1670322833;null;null;25.62;null@30.31429741753472,120.35676432291666;1670322833;null;null;25.62;null@30.31429741753472,120.35676432291666;1670322833;null;null;25.62;null@30.31429741753472,120.35676432291666;1670322833;null;null;25.62;null@30.31429741753472,120.35676432291666;1670322902;null;null;25.62;null@30.3148583984375,120.35674641927083;1670322906;null;null;20.01;null@30.31530707465278,120.35677761501736;1670322909;null;null;23.48;null@30.31526584201389,120.3575404188368;1670322913;null;null;21.06;null@30.315331759982637,120.35685275607639;1670323528;null;null;5.67;null@30.31531005859375,120.35717827690972;1670323531;null;null;3.0;null@30.31528862847222,120.35751546223959;1670323534;null;null;5.27;null@30.315048828125,120.35755940755209;1670323537;null;null;19.07;null@30.31414767795139,120.35755940755209;1670323544;null;null;12.06;null@30.313807508680554,120.35735514322917;1670323548;null;null;18.56;null@30.313783094618056,120.35721082899306;1670323551;null;null;10.34;null@30.313798285590277,120.35677924262153;1670323554;null;null;4.14;null@30.314012315538193,120.35675130208334;1670323557;null;null;11.52;null@30.314376356336805,120.35677625868055;1670323561;null;null;14.59;null@30.31498236762153,120.35673529730903;1670323563;null;null;22.7;null@30.31530707465278,120.35677761501736;1670323567;null;null;24.0;null@30.31532009548611,120.35716389973959;1670323570;null;null;18.0;null@30.31532009548611,120.35716389973959;1670323570;null;null;18.0;null@30.31532009548611,120.35716389973959;1670323570;null;null;18.0;null@30.31532009548611,120.35716389973959;1670323570;null;null;18.0;null@30.31532009548611,120.35716389973959;1670323570;null;null;18.0;null@30.31532009548611,120.35716389973959;1670323570;null;null;18.0;null@30.31532009548611,120.35716389973959;1670323570;null;null;18.0;null@30.31532009548611,120.35716389973959;1670323570;null;null;18.0;null@30.31532009548611,120.35716389973959;1670323594;null;null;18.0;null@30.315072970920138,120.35756754557292;1670323597;null;null;18.38;null@30.314430609809026,120.35758138020833;1670323601;null;null;33.29;null@30.313853624131944,120.35750244140625;1670323604;null;null;3.0;null@30.31380126953125,120.3571888563368;1670323607;null;null;20.86;null@30.31380126953125,120.3571888563368;1670323607;null;null;20.86;null@30.31380126953125,120.3571888563368;1670323607;null;null;20.86;null@30.31380126953125,120.3571888563368;1670323607;null;null;20.86;null@30.31380126953125,120.3571888563368;1670323607;null;null;20.86;null@30.31380126953125,120.3571888563368;1670323607;null;null;20.86;null@30.31380126953125,120.3571888563368;1670323607;null;null;20.86;null@30.31380126953125,120.3571888563368;1670323607;null;null;20.86;null@30.31380126953125,120.3571888563368;1670323607;null;null;20.86;null@30.31380126953125,120.3571888563368;1670323776;null;null;20.86;null@30.315331217447916,120.3570667860243;1670323779;null;null;4.99;null@30.315252821180554,120.35752034505208;1670323783;null;null;4.88;null@30.314829915364584,120.35759548611111;1670323786;null;null;16.85;null@30.31383544921875,120.35744710286458;1670323792;null;null;22.58;null@30.313776312934028,120.35730523003473;1670323795;null;null;15.53;null','pointstatus':'1','usetime':'1170.0'}" \
       % (start + day * 1.5, start + day * 1.5 + 1171)
# print(time.asctime(time.localtime(1669700964)))

headers = {"Connection": "Keep-Alive", "Charset": "UTF-8",
           "Accept-Encoding": "gzip",
           "Content-Type": "application/x-www-form-urlencoded",
           "User-Agent": "Dalvik/2.1.0 (Linux; U; Android 10; YOK-AN10 Build/HONORYOR-AN00)",
           "Host": "10.11.246.182:8029"}


def getRandTime(sourceTime):
    changeMinute = random.randint(-30, 30)
    changeHour = random.randint(-1, 0)
    changeSecond = random.randint(-30, 30)
    return sourceTime + changeMinute * minute + changeHour * hour + changeSecond * second

def getUid(Id):
    header = {"Connection": "Keep-Alive", "Charset": "UTF-8",
              "Accept-Encoding": "gzip",
              "Content-Type": "application/x-www-form-urlencoded",
              "User-Agent": "Dalvik/2.1.0 (Linux; U; Android 10; DBY-W09 Build/HUAWEIDBY-W09)",
              "Host": "quantiwang.cn:8012"}
    fake_in = "name=['bangdingschool','10338','%d','b03e91afbdd40ffe','HUAWEI','DBY-W09','android','10']" % (Id)
    requ = requests.post(url="http://quantiwang.cn:8012/cloud/DflyServer", headers=header, data=fake_in.encode("UTF-8"))
    return requ.text.split(",")[2]


def run(Id, total, Uid):
    url = r'http://10.11.246.182:8029/DragonFlyServ//uploadRunData'
    for i in range(total):
        runTime = getRandTime(start + day * i)
        # print(runTime)
        fake = b'''{'begintime':'%d','endtime':'%d','uid':'%s','schoolno':'10338','distance':'3100.0','speed':'2.6495726495726495',\
        'studentno':'%d','atttype':'3','eventno':'801','location':'30.31536783854164,120.35738742404511;1670322623;null;null;3.0;null@30.315320638020732,120.35749348958333;1670322627;null;null;3.0;null@30.313841417100694,120.35747748480902;1670322637;null;null;22.63;null@30.31379665798611,120.35700276692708;1670322640;null;null;5.31;null@30.313838433159724,120.35676323784722;1670322644;null;null;3.0;null@30.31438449435764,120.35678927951389;1670322647;null;null;20.96;null@30.314882269965278,120.35675130208334;1670322650;null;null;9.3;null@30.315135633680555,120.35675835503473;1670322654;null;null;7.37;null@30.315337999131945,120.35679551866319;1670322657;null;null;24.0;null@30.315296766493056,120.35751546223959;1670322660;null;null;24.0;null@30.31447970920139,120.35758056640626;1670322667;null;null;27.52;null@30.31447970920139,120.35758056640626;1670322667;null;null;27.52;null@30.31447970920139,120.35758056640626;1670322667;null;null;27.52;null@30.31447970920139,120.35758056640626;1670322667;null;null;27.52;null@30.31431884765625,120.35755452473958;1670322679;null;null;18.0;null@30.313806423611112,120.35742730034723;1670322683;null;null;10.76;null@30.313778754340277,120.35694254557292;1670322686;null;null;18.0;null@30.314107259114582,120.35676432291666;1670322690;null;null;32.37;null@30.314183485243056,120.35681043836806;1670322692;null;null;18.0;null@30.314183485243056,120.35681043836806;1670322692;null;null;18.0;null@30.314183485243056,120.35681043836806;1670322692;null;null;18.0;null@30.314183485243056,120.35681043836806;1670322692;null;null;18.0;null@30.314183485243056,120.35681043836806;1670322692;null;null;18.0;null@30.314183485243056,120.35681043836806;1670322692;null;null;18.0;null@30.314183485243056,120.35681043836806;1670322692;null;null;18.0;null@30.314183485243056,120.35681043836806;1670322692;null;null;18.0;null@30.314183485243056,120.35681043836806;1670322736;null;null;18.0;null@30.314856499565973,120.35673529730903;1670322739;null;null;18.0;null@30.31530707465278,120.35677761501736;1670322742;null;null;27.68;null@30.31538058810764,120.35722330729166;1670322746;null;null;8.78;null@30.315335828993057,120.35692654079861;1670322761;null;null;3.0;null@30.31533365885417,120.35745144314237;1670322765;null;null;11.9;null@30.315164116753472,120.35758734809028;1670322768;null;null;14.17;null@30.31431884765625,120.35756944444445;1670322779;null;null;11.7;null@30.314036729600694,120.35752034505208;1670322782;null;null;17.8;null@30.313744303385416,120.35719102647569;1670322786;null;null;24.0;null@30.31378960503472,120.35688666449653;1670322789;null;null;10.77;null@30.314027506510417,120.35667426215278;1670322793;null;null;24.0;null@30.31429226345486,120.35677137586805;1670322796;null;null;17.2;null@30.314549424913196,120.35677544487847;1670322799;null;null;3.97;null@30.314837510850694,120.35674723307292;1670322803;null;null;3.4;null@30.315337999131945,120.35679551866319;1670322806;null;null;24.0;null@30.3153662109375,120.35716824001736;1670322810;null;null;15.33;null@30.315244140625,120.35755045572917;1670322813;null;null;6.54;null@30.313968641493055,120.35759250217014;1670322823;null;null;21.15;null@30.313770073784724,120.35727511935764;1670322827;null;null;18.0;null@30.314002278645834,120.35678439670139;1670322831;null;null;23.3;null@30.31429741753472,120.35676432291666;1670322833;null;null;25.62;null@30.31429741753472,120.35676432291666;1670322833;null;null;25.62;null@30.31429741753472,120.35676432291666;1670322833;null;null;25.62;null@30.31429741753472,120.35676432291666;1670322833;null;null;25.62;null@30.31429741753472,120.35676432291666;1670322833;null;null;25.62;null@30.31429741753472,120.35676432291666;1670322833;null;null;25.62;null@30.31429741753472,120.35676432291666;1670322833;null;null;25.62;null@30.31429741753472,120.35676432291666;1670322833;null;null;25.62;null@30.31429741753472,120.35676432291666;1670322833;null;null;25.62;null@30.31429741753472,120.35676432291666;1670322902;null;null;25.62;null@30.3148583984375,120.35674641927083;1670322906;null;null;20.01;null@30.31530707465278,120.35677761501736;1670322909;null;null;23.48;null@30.31526584201389,120.3575404188368;1670322913;null;null;21.06;null@30.315331759982637,120.35685275607639;1670323528;null;null;5.67;null@30.31531005859375,120.35717827690972;1670323531;null;null;3.0;null@30.31528862847222,120.35751546223959;1670323534;null;null;5.27;null@30.315048828125,120.35755940755209;1670323537;null;null;19.07;null@30.31414767795139,120.35755940755209;1670323544;null;null;12.06;null@30.313807508680554,120.35735514322917;1670323548;null;null;18.56;null@30.313783094618056,120.35721082899306;1670323551;null;null;10.34;null@30.313798285590277,120.35677924262153;1670323554;null;null;4.14;null@30.314012315538193,120.35675130208334;1670323557;null;null;11.52;null@30.314376356336805,120.35677625868055;1670323561;null;null;14.59;null@30.31498236762153,120.35673529730903;1670323563;null;null;22.7;null@30.31530707465278,120.35677761501736;1670323567;null;null;24.0;null@30.31532009548611,120.35716389973959;1670323570;null;null;18.0;null@30.31532009548611,120.35716389973959;1670323570;null;null;18.0;null@30.31532009548611,120.35716389973959;1670323570;null;null;18.0;null@30.31532009548611,120.35716389973959;1670323570;null;null;18.0;null@30.31532009548611,120.35716389973959;1670323570;null;null;18.0;null@30.31532009548611,120.35716389973959;1670323570;null;null;18.0;null@30.31532009548611,120.35716389973959;1670323570;null;null;18.0;null@30.31532009548611,120.35716389973959;1670323570;null;null;18.0;null@30.31532009548611,120.35716389973959;1670323594;null;null;18.0;null@30.315072970920138,120.35756754557292;1670323597;null;null;18.38;null@30.314430609809026,120.35758138020833;1670323601;null;null;33.29;null@30.313853624131944,120.35750244140625;1670323604;null;null;3.0;null@30.31380126953125,120.3571888563368;1670323607;null;null;20.86;null@30.31380126953125,120.3571888563368;1670323607;null;null;20.86;null@30.31380126953125,120.3571888563368;1670323607;null;null;20.86;null@30.31380126953125,120.3571888563368;1670323607;null;null;20.86;null@30.31380126953125,120.3571888563368;1670323607;null;null;20.86;null@30.31380126953125,120.3571888563368;1670323607;null;null;20.86;null@30.31380126953125,120.3571888563368;1670323607;null;null;20.86;null@30.31380126953125,120.3571888563368;1670323607;null;null;20.86;null@30.31380126953125,120.3571888563368;1670323607;null;null;20.86;null@30.31380126953125,120.3571888563368;1670323776;null;null;20.86;null@30.315331217447916,120.3570667860243;1670323779;null;null;4.99;null@30.315252821180554,120.35752034505208;1670323783;null;null;4.88;null@30.314829915364584,120.35759548611111;1670323786;null;null;16.85;null@30.31383544921875,120.35744710286458;1670323792;null;null;22.58;null@30.313776312934028,120.35730523003473;1670323795;null;null;15.53;null','pointstatus':'1','usetime':'1170.0'}''' \
               % (runTime, runTime + random.randint(1100, 1200), Uid.encode("UTF-8"), Id)
        f_out = gzip.compress(fake)
        requ = requests.post(url=url, headers=headers, data=f_out)
        # print(requ.text)
        print("\r", end="")
        print("刷取中!({}/{})".format(i + 1, total), end="")
    print()


if __name__ == "__main__":
    while True:
        while True:
            password = input("输入密码:")
            if password == 'root':
                break
            else:
                print("密码错误")
        Id = int(input("学号:"))
        tmp = input("输入起始日期(格式****-**-**):")
        tmp += " 21:30:30"
        timeArray = time.strptime(tmp, "%Y-%m-%d %H:%M:%S")
        timestamp = time.mktime(timeArray)
        start = timestamp
        total = int(input("天数:"))
        run(Id, total, getUid(Id))





